package com.jiang.daily.Q1526;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/10/30 14:51
 */
class Solution {
//     private int len;
//     private int res;

//     public int minNumberOperations(int[] target) {
//         len = target.length - 1;
//         merge(target, 0, len);
//         return res;
//     }

    //     public void merge(int[] target, int start, int end) {
//         if (start > end) {
//             return;
//         }
//         List<Integer> list = new ArrayList<>();
//         // 获取从start到end的区间的最小值，stream
//         int minValue = Arrays.stream(target, start, end + 1).min().orElseThrow();
//         // list获取最小值
// //        list.stream()
// //                .skip(start)
// //                .limit(end - start)
// //                .min(Integer::compareTo)
// //                .orElseThrow(() -> new IllegalArgumentException("Invalid range"));
//         // 获取从start到end的区间的最小值
// //        IntStream.range(start, end)
// //                .min()
// //                .orElseThrow(() -> new IllegalArgumentException("Invalid range"));
//         for (int i = start; i <= end; i++) {
//             if (target[i] == minValue) {
//                 list.add(i);
//             }
//             target[i] -= minValue;
//         }
//         res += minValue;
//         int size = list.size();
//         if (size > 0) {
//             merge(target, start, list.get(0) - 1);
//             merge(target, list.get(size - 1) + 1, end);
//             for (int i = 0; i < size - 1; i++) {
//                 merge(target, list.get(i) + 1, list.get(i + 1) - 1);
//             }
//         }
//     }
    public int minNumberOperations(int[] target) {
        int res = target[0];
        for (int i = 1; i < target.length; i++) {
            res += Math.max(target[i] - target[i - 1], 0);
        }
        return res;
    }
}
